---
title: TODOPopupControl
summary: API reference for TODOPopupControl.
status: draft
owner: <owner>
last_reviewed: 2026-08-21
library: SAIF.Presentation.Web.Controls.PopUps.Infragistics111
reference_type: package
---

# TODOPopupControl

`TODOPopupControl` prompts the user to confirm creation of a Diary/Claim task, optionally requiring a Mail ID and validating any entered Mail ID against employee data before allowing confirmation ([OP-6](../../operations/todo-popup-control-diary-task-confirmation.md)). It supports two presentation modes driven by the supplied `clsPopupTask.TaskType`: an optional task (Yes/No choice) and a required task (acknowledgement only, no decline option).

## Purpose
- Confirm or decline creation of a Diary/Claim task, using a caller-supplied `clsPopupTask` describing the task and whether a Mail ID is required.
- Validate any entered Mail ID against employee data before allowing confirmation ([BR-POPUP-004](../../business-rules.md#br-popup-004-todo-diary-task-mail-id-must-resolve-to-a-valid-employee-when-required-or-supplied)).
- Restrict "required" tasks to an acknowledgement-only UI with no decline path ([BR-POPUP-005](../../business-rules.md#br-popup-005-a-%22requiredtask%22-diary-task-offers-only-acknowledgement-(no-decline-option))).

## Context
- Namespace: `SAIF.Presentation.Web.Controls.PopUps`
- Assembly/package: `SAIF.Presentation.Web.Controls.PopUps.Infragistics111` (package)

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| `Task` | `Public Property Task() As clsPopupTask` | The task description object driving the popup's message, Mail ID requirement, and Yes/No vs. acknowledgement-only presentation |
| `Active` | `Public Property Active() As Boolean` | Toggles whether the popup renders markup |
| `Top` | `Public Property Top() As Integer` | Vertical pixel offset for popup positioning |
| `Left` | `Public Property Left() As Integer` | Horizontal pixel offset for popup positioning |
| `ConfirmAction` | `Public Event ConfirmAction(ByVal Confirm As Boolean, ByVal e As TODOTaskEventArgs)` | Raised on Yes (`Confirm = True`, only after Mail ID validation succeeds) or No (`Confirm = False`) |
| `TODOTaskEventArgs` (nested type) | `Public Class TODOTaskEventArgs` — constructor `New(inMailid As String, inTask As clsPopupTask)` with read-only `MailID`, `Task` | Immutable payload delivered with `ConfirmAction`, carrying the entered Mail ID and the originating task |
| `clsPopupTask` (nested type, `Serializable`) | `Public Class clsPopupTask` — 3 overloaded constructors; read-only `TaskId`, `TaskMsg`, `TaskType` (`PopupTypes.OptionalTask`/`RequiredTask`), `MailidRequired`, `ClaimID`, `myGuid` | Immutable description of the task being confirmed, supplied by the hosting page before setting `Active = True` |
| `PopupTypes` (nested enum) | `Public Enum PopupTypes` | Distinguishes `OptionalTask` (Yes/No choice) from `RequiredTask` (acknowledgement only) for `clsPopupTask.TaskType` |

## Behavioral notes
- On Yes, if a Mail ID is entered (required or not), it must resolve to a valid employee record via `clsEmployeeData.GetDataByMailID(DataPortalInfo, mailid).IsValid` (referenced package call, not traced further)** ([BR-POPUP-004](../../business-rules.md#br-popup-004-todo-diary-task-mail-id-must-resolve-to-a-valid-employee-when-required-or-supplied)).
- On Mail ID validation failure, the popup remains active and the Mail ID field is flagged with an `"errorbackcolor"` CSS class rather than raising `ConfirmAction`.
- `RequiredTask`-typed tasks hide the No button entirely and relabel Yes as "OK" — the task cannot be declined through this popup ([BR-POPUP-005](../../business-rules.md#br-popup-005-a-%22requiredtask%22-diary-task-offers-only-acknowledgement-(no-decline-option))).

## Constraints and usage notes
- `Task` must be assigned by the hosting page before `Active` is set to `True`; `Render()` reads `Task.MailidRequired`/`Task.TaskType` to choose the presentation mode*.

> **Note:** Statements marked with `*` were inferred from code structure, naming
> conventions, or contextual evidence where direct confirmation was not available
> in source artifacts. Statements marked with `**` could not be confirmed; treat
> as unknown until verified.

## Sources
- `SAIF.Presentation.Web.Controls.PopUps.Infragistics111\TODOPopupControl.vb`
- `SAIF.Presentation.Web.Controls.PopUps.Infragistics111\TODOPopup.ascx`
